<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 相同点：都可以改变函数内部的 this 指向

    // 区别点：
    // 1.call 和 apply 都是调用函数，都能改变函数内部 this 指向
    // 2.call 和 apply 传递的参数不一样，call传递参数arg1,arg2,...的形式，apply传递的必须是数组形式 [arg]
    // 3. bind 不会调用函数，能改变函数内部 this 指向

    // 主要应用场景：
    // 1.call 调用函数并且可以传递参数
    // 2.apply 经常跟数组有关系，比如借助于数学对象实现数组的最大值最小值
    // 3.bind 不调用函数，但还想改变 this 指向，可以使用 bind，比如改变定时器内部的 this 指向
  </script>
</body>

</html>